A computing system can be manufactured to have one or more features that are disabled by default. The term “feature” refers to a component of the computer that provides (or enhances) a particular function. A “computing system” refers to a wide range of devices that process digitized information including, for example, a desktop computer, a laptop computer, a server, a network infrastructure device (e.g., router, switch, etc.), a digital home entertainment system, a cellular phone, and the like.
One reason for disabling a feature by default is to provide an upgrade path for the computer (or its components). Many software programs, for example, are designed to allow a user to initially obtain a simple version of the program and subsequently upgrade the simple version to a more robust version. In some cases, the difference between the two (or more) versions of the program is merely a question of which features of the program are disabled. The simple version of the program may be sold at a reduced price that reflects that not all features are available.
A user who wants to upgrade the software can purchase access to the more robust version from, for example, a software vendor. Typically, the software vendor does not need to send new software modules to the user who is upgrading the software. The reason for this is that, typically, the code supporting the more robust features is already in the program but this code is disabled. To enable the features of the software, the vendor may provide a key that enables a path so that one or more software features are activated. Once the path has been enabled, the user can access a more robust set of features.
The software-based model for feature activation has a number of limitations. For example, the key to enable the features is difficult to secure because it is a software-based key that is used in a large number of transactions. An unsecured key can be used to activate features without actually paying for the features. In addition, the software-based model does not readily limit the number of attempts a user may make to activate a feature. Thus, a hacker can repeatedly try to break the key until he or she is successful. For these and other reasons, the software-based model for feature activation is not well suited to hardware feature activation.